package com.sky.task;

import com.sky.constant.MessageConstant;
import com.sky.entity.Orders;
import com.sky.mapper.OrderMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;

@Slf4j

@Component
public class OrderTask {

    @Autowired
    private OrderMapper orderMapper;

    //TODO /*暂时注释掉防止没有数据用来测试*/
//    /**
//     * 处理超时未付款的订单
//     */
//    //每分钟触发一次
//    @Scheduled(cron = "0 * * * * ?")
//    public void handleTimeOutOrder() {
//        log.info("处理超时未付款的订单");
//        LocalDateTime now = LocalDateTime.now();
//        LocalDateTime outTime = now.minusMinutes(15);
//        // 查找状态为1 代付款且付款时间超过十五分钟的订单
//        List<Orders> timeOutOrderList = orderMapper.selectTimeOutOrder(outTime);
//        if (timeOutOrderList != null && timeOutOrderList.size() >= 1) {
//            for (Orders order : timeOutOrderList) {
//                log.info("取消的超时订单订单号：{}",order.getNumber());
//                // 修改订单的状态为6 已取消，取消原因为订单超时，自动取消，取消时间为now
//                order.setStatus(Orders.CANCELLED);
//                order.setCancelTime(now);
//                order.setCancelReason("订单超时，自动取消！");
//                orderMapper.update(order);
//            }
//        }
//    }
//
//    /**
//     * 处理晚上一点还处于派送中未完成的订单
//     */
//    @Scheduled(cron = "0 0 1 * * ?")
//    public void handleUnCompleteOrder() {
//        //查找状态为4 派送中的订单
//        LocalDateTime now = LocalDateTime.now();
//        LocalDateTime outTime = now.minusHours(1);
//        List<Orders> timeOutOrderList = orderMapper.selectTimeOutOrder(outTime);
//        if (timeOutOrderList != null && timeOutOrderList.size() >= 1) {
//            for (Orders order : timeOutOrderList) {
//                // 修改订单的状态为5 已完成
//                order.setStatus(Orders.COMPLETED);
//                orderMapper.update(order);
//            }
//        }
//    }
}
